﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer.Interfaces;
using BusinessLayer.Implementacion;
using EntityLayer;

namespace proyGestionVisitas.Gestion
{
    public partial class wfrmClienteActualizar : System.Web.UI.Page
    {
        private IFacadeClienteActualizar FacadeClienteActualizar;
        private List<T_Cliente> listaCliente;
        private T_Cliente objCliente;
        private String msg;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Session["usu"] == null) { Response.Redirect("~/Account/Login.aspx"); return; }
                if (!IsPostBack)
                {

                }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex, "Page_Load");
            }
        }

        private void MostrarComentario(String msg, String titulo = "Mensaje")
        {
            CargarComentario(msg, titulo);
        }

        private void MostrarComentario(Exception ex, String titulo)
        {
            if (ex != null) { msg = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message; }
            CargarComentario(msg, titulo);
        }

        private void CargarComentario(String msg, String titulo)
        {
            lblmenOK.Text = msg;
            pcMensaje.HeaderText = titulo;
            pcMensaje.ShowOnPageLoad = true;
        }

        protected void btnLimpiar_Click(object sender, EventArgs e)
        {
            Limpiar();
        }

        protected void btnRegresar_Click(object sender, EventArgs e)
        {
            Regresar();
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            if (!ValidarCampos()) return;
            GrabarCliente();
        }

        private void Limpiar()
        {
            try
            {
                txtCodigoCliente.Text = String.Empty;
                txtRazonSocial.Text = String.Empty;
                txtDireccion.Text = String.Empty;
                txtDepartamento.Text = String.Empty;
                txtProvincia.Text = String.Empty;
                txtDistrito.Text = String.Empty;
                txtRubroComercial.Text = String.Empty;
                txtSegmento.Text = String.Empty;
                txtPrincipalCIIU.Text = String.Empty;
                txtSect1CIIU.Text = String.Empty;
                txtSec2CIIU.Text = String.Empty;

            }
            catch (Exception ex)
            {
                MostrarComentario(ex, "Limpiar");
            }
        }

        private void Regresar()
        {
            Response.Redirect("~/Default.aspx", false);
            return;
        }

        private Boolean ValidarCampos()
        {
            Boolean ok = true;
            msg = String.Empty;
            try
            {
                if (txtCodigoCliente.Text.Trim() == String.Empty)
                {
                    ok = false;
                    msg = "Debe ingresar el codigo del Cliente.";
                }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex, "ValidarCampos");
            }
            if (msg != String.Empty) MostrarComentario(msg);
            return ok;
        }

        private void GrabarCliente()
        {
            Boolean ok = true;
            msg = String.Empty;
            try
            {
                Int64? nu_ruc, int64_vacio = null;
                String no_razon_social, co_tipo_doc, no_direccion, no_departamento, no_provincia, no_distrito, no_rubro_comercial, no_segmento;
                String no_principal_CIIU, no_sec1_CIIU, no_sec2_CIIU;

                nu_ruc = (txtCodigoCliente.Text.Trim() != String.Empty) ? Convert.ToInt64(txtCodigoCliente.Text.Trim()) : int64_vacio;

                listaCliente = new List<T_Cliente>();
                FacadeClienteActualizar = new FacadeClienteActualizar();
                listaCliente = FacadeClienteActualizar.ListarCliente(nu_ruc);

                if (listaCliente != null && listaCliente.Count() > 0) { MostrarComentario("El Código del Cliente ya existe."); return; }

                no_razon_social = txtRazonSocial.Text.Trim();
                co_tipo_doc = (cboTipodoc.SelectedItem != null) ? cboTipodoc.SelectedItem.Value.ToString() : cboTipodoc.Value.ToString();
                no_direccion = txtDireccion.Text.Trim();
                no_departamento = txtDepartamento.Text.Trim();
                no_provincia = txtProvincia.Text.Trim();
                no_distrito = txtDistrito.Text.Trim();
                no_rubro_comercial = txtRubroComercial.Text.Trim();
                no_segmento = txtSegmento.Text.Trim();
                no_principal_CIIU = txtPrincipalCIIU.Text.Trim();
                no_sec1_CIIU = txtSect1CIIU.Text.Trim();
                no_sec2_CIIU = txtSec2CIIU.Text.Trim();

                objCliente = new T_Cliente();
                objCliente.nu_ruc = Convert.ToInt64(nu_ruc);
                objCliente.no_razon_social = no_razon_social;
                objCliente.co_tipo_doc = co_tipo_doc;
                objCliente.no_departamento = no_departamento;
                objCliente.no_provincia = no_provincia;

                objCliente.no_distrito = no_distrito;
                objCliente.no_rubro_comercial = no_rubro_comercial;
                objCliente.no_sector_economico = no_segmento;
                objCliente.no_principal_CIIU = no_principal_CIIU;
                objCliente.no_secundario1_CIIU = no_sec1_CIIU;
                objCliente.no_secundario2_CIIU = no_sec2_CIIU;
                objCliente.co_cliente_estado = 1;


                ok = FacadeClienteActualizar.InsertarCliente(objCliente);

                if (ok) msg = "Cliente Registrado Correctamente.";
                else msg = "Error al Registrar el Cliente.";

            }
            catch (Exception ex)
            {
                MostrarComentario(ex, "GrabarCliente");
                return;
            }
            if (msg != String.Empty) MostrarComentario(msg);
            if (ok) Limpiar();
        }


    }
}